package com.ruoyi.school.service;

import com.ruoyi.school.domain.PacProSkillCert;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.school.domain.dto.PacProSkillCertListDTO;
import com.ruoyi.school.domain.vo.AcademicCommonVo;
import com.ruoyi.school.domain.vo.HonorWallTopThreeVo;
import com.ruoyi.school.handler.wall.WallTopThree;
import com.ruoyi.system.domain.TableData;

import java.util.List;

/**
* @author jeremylin
* @description 针对表【pac_pro_skill_cert(专业技能证书)】的数据库操作Service
* @createDate 2025-05-29 17:56:29
*/
public interface PacProSkillCertService extends IService<PacProSkillCert> {

    /**
     * 获取列表
     *
     * @param pacProSkillCert
     * @return
     */
    TableData<PacProSkillCert> getList(PacProSkillCertListDTO pacProSkillCert);

    /**
     * 详情
     * @param pacProSkillCert
     * @return
     */
    PacProSkillCert getDetails(PacProSkillCert pacProSkillCert);

    /**
     * 新增技能证书
     * @param pacProSkillCert
     * @return
     */
    boolean add(PacProSkillCert pacProSkillCert);

    /**
     * 编辑技能证书
     * @param pacProSkillCert
     * @return
     */
    boolean edit(PacProSkillCert pacProSkillCert);

    /**
     * 删除技能证书
     * @param pacProSkillCert
     * @return
     */
    boolean delete(PacProSkillCert pacProSkillCert);

    /**
     * 审核技能证书
     *
     * @param pacProSkillCert
     */
    void audit(PacProSkillCert pacProSkillCert);

    /**
     * 上墙
     * @param academicCommonVo
     * @return
     */
    boolean wall(AcademicCommonVo academicCommonVo);

    /**
     * 下墙
     * @param academicCommonVo
     * @return
     */
    boolean unWall(AcademicCommonVo academicCommonVo);

    /**
     * 学生-获取我的技能证书列表
     *
     * @param pacProSkillCert
     * @return
     */
    List<PacProSkillCert> myList(PacProSkillCert pacProSkillCert);

    /**
     * 学生新增电子证书
     * @param pacProSkillCert
     * @return
     */
    boolean addMy(PacProSkillCert pacProSkillCert);

    /**
     * 学生编辑电子证书
     * @param pacProSkillCert
     * @return
     */
    boolean updateMy(PacProSkillCert pacProSkillCert);

    /**
     * 获取前三
     *
     * @param wallTopThree
     * @return
     */
    List<HonorWallTopThreeVo> getTopThree(WallTopThree wallTopThree);

    /**
     * 获取学生的荣誉列表
     * @param wallTopThree
     * @return
     */
    List<HonorWallTopThreeVo> getStuHonorList(WallTopThree wallTopThree);

    long countByAudit();

    List<PacProSkillCert> selectStuTop5(Integer id);
}
